package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.system.domain.TFile;
import org.springframework.web.multipart.MultipartFile;

/**
 * 文件管理Service接口
 *
 * @author Bandit
 * @date 2022-11-06
 */
public interface ITFileService
{


    /**
     * 分片上传
     * @param slice 文件分片
     * @param fileMD5 文件MD5
     * @param sliceNo 文件序号
     * @param totalSliceNo 分片总数
     * @return url
     * @throws Exception
     */
    public String uploadFileBySlices(MultipartFile slice,
                                     String fileMD5,
                                     Integer sliceNo,
                                     Integer totalSliceNo) throws Exception;

    /**
     * 简单上传文件
     * @param file 文件
     * @param fileMD5 文件MD5
     * @return url
     * @throws Exception
     */
    public String uploadFile(MultipartFile file, String fileMD5) throws Exception;


    /**
     * 获得文件MD5
     * @param file
     * @return
     * @throws Exception
     */
    public String getFileMD5(MultipartFile file) throws Exception;

    /**
     * 通过MD5查询文件
     * @param fileMd5
     * @return
     */
    public TFile getFileByMd5(String fileMd5);

    /**
     * 查询文件管理
     *
     * @param id 文件管理主键
     * @return 文件管理
     */
    public TFile selectTFileById(Long id);

    /**
     * 查询文件管理列表
     *
     * @param tFile 文件管理
     * @return 文件管理集合
     */
    public List<TFile> selectTFileList(TFile tFile);

    /**
     * 新增文件管理
     *
     * @param tFile 文件管理
     * @return 结果
     */
    public int insertTFile(TFile tFile);

    /**
     * 修改文件管理
     *
     * @param tFile 文件管理
     * @return 结果
     */
    public int updateTFile(TFile tFile);

    /**
     * 批量删除文件管理
     *
     * @param ids 需要删除的文件管理主键集合
     * @return 结果
     */
    public int deleteTFileByIds(Long[] ids);

    /**
     * 删除文件管理信息
     *
     * @param id 文件管理主键
     * @return 结果
     */
    public int deleteTFileById(Long id);
}
